package com.moonbird.springboot.Utils.Qwen;

import com.alibaba.dashscope.audio.tts.SpeechSynthesizer;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisParam;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisAudioFormat;

import java.nio.ByteBuffer;
import java.util.Base64;

/**
 * 提供文本转语音并转换为Base64编码音频字符串的工具类。
 */
public final class TextToSpeechUtils {

    private static final String API_KEY = "sk-c91bee81e9ef4fd4abe43a61b8f38479";

    private TextToSpeechUtils() {
        // 私有构造器防止实例化
    }

    /**
     * 合成指定文本的音频并返回Base64编码的音频字符串。
     *
     * @param text 要合成的文本。
     * @return Base64编码的音频字符串。
     */
    public static String syncAudioDataToBase64(String text) {
        SpeechSynthesizer synthesizer = new SpeechSynthesizer();
        SpeechSynthesisParam param = SpeechSynthesisParam.builder()
                .model("sambert-zhichu-v1")
                .text(text)
                .sampleRate(48000)
                .format(SpeechSynthesisAudioFormat.WAV)
                .apiKey(API_KEY)
                .build();

        // 调用call方法，传入param参数，获取合成音频
        ByteBuffer audio = synthesizer.call(param);

        // 将ByteBuffer转换为byte数组
        byte[] audioBytes = audio.array();

        // 使用Base64进行编码
        String base64Audio = Base64.getEncoder().encodeToString(audioBytes);

        return base64Audio;
    }

}